package com.chenfan.mcn.dao;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.chenfan.common.extension.mybatisplus.enhanced.EnhancedBaseMapper;
import com.chenfan.mcn.model.LiveContractCommodity;
import com.chenfan.mcn.model.dto.LiveCommoditySearchDTO;
import com.chenfan.mcn.model.vo.*;
import org.apache.ibatis.annotations.Param;

import java.math.BigDecimal;
import java.util.List;

/**
 * <p>
 * 直播合同商品表 Mapper 接口
 * </p>
 *
 * @author wulg
 * @since 2023-03-13
 */
public interface LiveContractCommodityMapper extends EnhancedBaseMapper<LiveContractCommodity> {


    /**
     * 分页查询
     * @param page
     * @param dto
     * @return
     */
    Page<LiveCommodityListVO> selectLiveCommoditysByPage(Page<LiveCommodityListVO> page, @Param("dto") LiveCommoditySearchDTO dto);

    /**
     * 分页查询
     * @param page
     * @param dto
     * @return
     */
    Page<LiveCommodityListVO> selectLiveCommoditysWithPayMonthByPage(Page<Object> page, @Param("dto") LiveCommoditySearchDTO dto);

    /**
     * 导出
     * @param dto
     * @return
     */
    List<LiveCommodityExportVO> exportLiveCommoditys(@Param("dto") LiveCommoditySearchDTO dto);

    /**
     * 统计GMV
     * @param lsIds
     * @return
     */
    BigDecimal getGmvByLsIds(List<Long> lsIds);

    /**
     * 批量更新直播商品数据
     *
     * @param list
     */
    void batchUpdate(List<LiveContractCommodity> list);


    /**
     * 查询直播商品详情
     *
     * @param lccId
     * @return
     */
    LiveContractCommodityVo detail(Long lccId);


    /**
     * 匹配直播直播商品
     * @param commodityIds
     * @param anchorNames
     * @param maxLimit
     * @return
     */
    List<LiveCommodityMatchResultVO> matchLiveCommodity(List<String> commodityIds, List<String> anchorNames, Long maxLimit);

    /**
     * 导入结算商品-更新直播商品结算状态
     * @param lccIds
     * @return
     */
    int updateSettlementStatusWhenImport(List<Long> lccIds);

    /**
     * 通过收入合同ID获取直播商品详情
     * @param incomeContractId
     * @return
     */
    List<LiveContractCommodityDetailVO> getLiveCommodityDetailsByContractId(Long incomeContractId);
}
